Binary Search এর ধারণা এবং ইমপ্লিমেন্টেশন

সার্চিং এলগরিদম (Searching Algorithms in C) - সি দিয়ে ডেটা স্ট্রাকচার (DSA using C) - Computer Programming

426

Binary Search একটি দ্রুত সার্চিং পদ্ধতি যা শুধুমাত্র সন্নিবেশিত (sorted) তালিকার উপর কাজ করে। এটি তালিকাকে পুনরায় বিভক্ত করে লক্ষ্য উপাদানটি খুঁজে বের করে, এবং এর সময় জটিলতা O(log n)।

Binary Search এর কাজের পদ্ধতি:

  1. তালিকার মধ্যবর্তী উপাদান নির্ধারণ করুন।
  2. লক্ষ্য উপাদানটি মধ্যবর্তী উপাদানের থেকে ছোট হলে বাম দিকের অংশে অনুসন্ধান করুন, আর বড় হলে ডান দিকের অংশে অনুসন্ধান করুন।
  3. এই প্রক্রিয়াটি তখন পর্যন্ত চলতে থাকে যতক্ষণ না লক্ষ্য উপাদান পাওয়া যায় বা তালিকার অংশটি খালি হয়ে যায়।

Binary Search এর গঠন

#include <stdio.h>

// Function to perform binary search
int binarySearch(int arr[], int size, int target) {
    int left = 0;
    int right = size - 1;

    while (left <= right) {
        int mid = left + (right - left) / 2; // Find the middle index

        // Check if the target is present at mid
        if (arr[mid] == target) {
            return mid; // Return index if target is found
        }
        // If target is greater, ignore left half
        if (arr[mid] < target) {
            left = mid + 1;
        } 
        // If target is smaller, ignore right half
        else {
            right = mid - 1;
        }
    }
    return -1; // Return -1 if target is not found
}

int main() {
    int arr[] = {10, 20, 30, 40, 50}; // Sorted array
    int size = sizeof(arr) / sizeof(arr[0]);
    int target = 30; // Element to search for

    int result = binarySearch(arr, size, target);
    if (result != -1) {
        printf("Element found at index %d\n", result);
    } else {
        printf("Element not found\n");
    }

    return 0;
}

১. কোড বিশ্লেষণ

binarySearch ফাংশন:

  • ইনপুট হিসেবে একটি সন্নিবেশিত অ্যারে, এর সাইজ এবং লক্ষ্য উপাদান গ্রহণ করে।
  • দুইটি সূচক left এবং right দিয়ে শুরু হয়।
  • একটি লুপের মাধ্যমে মধ্যবর্তী উপাদান খুঁজে বের করে এবং লক্ষ্য উপাদানের সাথে তুলনা করে।
  • যদি লক্ষ্য উপাদান পাওয়া যায়, তবে ইনডেক্স ফেরত দেয়।
  • যদি লক্ষ্য উপাদান মধ্যবর্তী উপাদানের থেকে ছোট হয়, তবে left আপডেট করা হয়। অন্যথায়, right আপডেট করা হয়।
  • যদি লক্ষ্য উপাদান না পাওয়া যায়, তাহলে -1 ফেরত দেয়।

main ফাংশন:

  • একটি সন্নিবেশিত উদাহরণ অ্যারে তৈরি করে এবং একটি লক্ষ্য উপাদান নির্ধারণ করে।
  • binarySearch ফাংশন কল করে এবং ফলাফল প্রিন্ট করে।

২. Binary Search এর সময় জটিলতা

  • Worst Case: O(log n) - যখন সবচেয়ে কম সংখ্যক পরিদর্শন করা হয়।
  • Best Case: O(1) - যদি লক্ষ্য উপাদান মধ্যবর্তী উপাদান হয়।
  • Average Case: O(log n) - গড় ক্ষেত্রে।
Content added By
Promotion

Are you sure to start over?

Loading...